package org.design.patterns.proxy;

public class ProxyMode {

    // 代理接口，即房东和中介的协议。
    public interface IHouse{
        // 房租
        String getPrice();
        // 是否同意出租
        boolean agree(int price);
    }
    // 目标类，即房东
    public static class HouseMaster implements IHouse{

        @Override
        public String getPrice() {
            return "房东：房租5000元";
        }

        @Override
        public boolean agree(int price) {
            if(price>4500) {
                return true;
            }
            return false;
        }
    }

    //代理类，即中介
    public static class Proxy implements IHouse{
        IHouse master;


        @Override
        public String getPrice() {
            System.out.println("中介：开始查找房源");
            if(master == null){
                master = new HouseMaster();
            }
            System.out.println("中介：介绍房子信息");
            String price = this.master.getPrice();
            System.out.println(price);
            return "中介：可以讲价";
        }

        @Override
        public boolean agree(int price) {
            return this.master.agree(price);
        }
    }

    // 调用方，即租客
    public static void main(String[] args) {
        // 找个有房子的中介
        Proxy proxy = new Proxy();
        // 找中介租房子,问问房子的价格
        System.out.println(proxy.getPrice());
        // 我出4800，看看房东是否同意。
        System.out.println("房东："+(proxy.agree(4800)?"同意":"不同意")+"出租");
    }
}